package com.softtown.modules.workflow.service;

import com.github.pagehelper.PageInfo;
import com.softtown.common.service.BaseService;
import com.softtown.modules.workflow.dto.SwfDocPhaseDefDTO;
import com.softtown.modules.workflow.dto.SwfDocPhaseDefPageDTO;
import com.softtown.modules.workflow.entity.SwfDocPhaseDefEntity;

import java.util.List;

/**
 * @author: Dingyayong
 * @Date: 2019/8/22 13:56
 * @Description:
 */
public interface SwfDocPhaseDefService extends BaseService<SwfDocPhaseDefEntity> {

    /**
     * 获取该公司出差申请审批段
     *
     * @param swfDocPhaseDefDTO
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO);

    /**
     * 获取该公司差旅报销审批段
     *
     * @param swfDocPhaseDefDTO
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getTravelDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO);

    /**
     * 通过审批段定义id获取该公司出差申请审批段
     *
     * @param phaseId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefByphaseId(Long phaseId);


    /**
     * 单据审批设置分页
     *
     * @param swfDocPhaseDefPageDTO
     * @return SwfDocPhaseDefEntity
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    PageInfo<SwfDocPhaseDefEntity> getDocPhaseDefList(SwfDocPhaseDefPageDTO swfDocPhaseDefPageDTO);

    /**
     * 通过审批类型获取该公司出差申请审批段
     *
     * @param docTypeValue
     * @param compId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> checkDocPhaseDef(Long compId ,String docTypeValue);

    /**
     * 根据该公司单据类型获取审批段设置
     *
     * @param swfDocPhaseDefDTO
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefByDocType(SwfDocPhaseDefDTO swfDocPhaseDefDTO);

    /**
     * 获取该公司借款申请审批段
     *
     * @param swfDocPhaseDefDTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @author fuming
     * @date 2019/10/29 11:06
     */
    List<SwfDocPhaseDefEntity> getAdvDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO);

    /**
     * 查找该公司差旅审批段定义
     *
     * @param compId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getActHeadDocPhaseDefList(Long compId);

    /**
     * 查找该公司单据类型对应的审批段定义
     * @param compId
     * @param docTypeValue
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author fuming
     * @Date 2020/5/27 18:01
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefListByDocType(Long compId, String docTypeValue);

    /**
     * 删除修改审批段定义
     *
     * @param swfDocPhaseDefEntity SwfDocPhaseDefEntity
     * @return
     * @author Dingyayong
     * @date 2019/11/14 14:33
     */
    void updateDocPhaseDef(SwfDocPhaseDefEntity swfDocPhaseDefEntity);

    /**
     * 获取该公司费用申请审批段
     *
     * @param swfDocPhaseDefDTO 公司审批段DTO
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author fuming
     * @Date 2019/12/19 17:50
     */
    List<SwfDocPhaseDefEntity> selectGenlDocPhaseDef(SwfDocPhaseDefDTO swfDocPhaseDefDTO);
}
